From: Christian Hergert Date: Sat, 12 Mar 2022 02:25:47 +0000 (-0800) Subject: macos: pass events to foreign windows X-Git-Tag: archive/raspbian/4.8.3+ds-2+rpi1~3^2~20^2~4^2~318^2~1 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=3cd68c5de5bcfafd027492928fd3dfedf10b2b66;p=gtk4.git macos: pass events to foreign windows --- diff --git a/gdk/macos/gdkmacosdisplay-translate.c b/gdk/macos/gdkmacosdisplay-translate.c index 9caddca811..7a0b84ccdb 100644 --- a/gdk/macos/gdkmacosdisplay-translate.c +++ b/gdk/macos/gdkmacosdisplay-translate.c @@ -1086,6 +1086,7 @@ _gdk_macos_display_translate (GdkMacosDisplay *self, GdkMacosSurface *surface; GdkMacosWindow *window; NSEventType event_type; + NSWindow *event_window; GdkEvent *ret = NULL; int x; int y; @@ -1128,6 +1129,15 @@ _gdk_macos_display_translate (GdkMacosDisplay *self, return NULL; } + /* If the event was delivered to NSWindow that is foreign (or rather, + * Cocoa native), then we should pass the event along to that window. + */ + if ((event_window = [nsevent window]) && !GDK_IS_MACOS_WINDOW (event_window)) + return NULL; + + /* If we can't find a GdkSurface to deliver the event to, then we + * should pass it along to the NSApp. + */ if (!(surface = find_surface_for_ns_event (self, nsevent, &x, &y))) return NULL;